Skip to main content

Exemple CNC 16 : fonction de sondage (distance restante nette) (G31)

Consultez les CNC16_G31.project exemple de projet dans le répertoire d'installation de CODESYS sous ..\CODESYS SoftMotion\Examples.

L'exemple de projet montre comment utiliser la fonction de sondage (distance restante nette).

Dans l'exemple, la machine se déplace dans la direction X jusqu'à ce qu'une barrière lumineuse soit atteinte à X=50. Dès que la barrière lumineuse est atteinte, la machine doit s'arrêter. Le code G restant doit être traité à partir de cette position

Structure de la demande

La structure est typique des applications CNC. Le code G est lu dans la tâche d'arrière-planPathTask). Le prétraitement des chemins est également effectué dans le cadre de cette tâche. L'interpolation est effectuée dans la tâche du busMainTask).

Le code G suivant est utilisé. En bloc N10, un positionnement rapide est effectué pour X = 20. Ensuite, avec G31 (fonction de sondage : dégagement du chemin restant), un mouvement est effectué X = 100. Enfin, en bloc N30, un mouvement linéaire est effectué pour X = 20, Y = 50.

N10 G0 X20 F100 E1000 E-1000
N20 G31 X100
N30 G1 X20 Y50

L'interaction entre l'interpolateur et l'interpréteur est particulièrement importante pour la fonction de sondage (chemin restant clair).

  1. L'interpréteur décode le code G et génère une ligne droite à partir de X=20 à X=100 pour bloc N20. Ensuite, le décodage s'arrête

  2. L'interpolateur effectue le mouvement linéaire et émet simultanément le numéro de sonde en sortie udiActProbe. Pour le G31, le numéro d'échantillon est toujours 1

  3. Dans l'application, l'interpolateur est arrêté avec bQuick_Stop dès que le lecteur dépasse sa position X=50. (Cela simule la barrière lumineuse.

    _sm_img_example_cnc16_1.png
  4. Dans le cadre de la tâche relative au bus, SMC_SetInterpreterStartPosition le bloc fonctionnel est utilisé pour copier en continu la position actuelle de la machine.

    _sm_img_example_cnc16_2.png
  5. Dans le PathTask, la position de départ est affectée à l'entrée SMC_NCInterpreter.piStartPosition:

    inter(
        sentences:= read.sentences,
        bExecute:= read.bExecute,
        nSizeOutQueue:= SIZEOF(bufIpo),
        pbyBufferOutQueue:= ADR(bufIpo),
        piStartPosition:= Main.setStart.StartPos);
  6. Dès que l'interpolateur est arrêté, bAcknProbe l'entrée est utilisée pour accuser réception de la commande G31. Dans une application réelle, il convient également de vérifier à ce stade que les axes ont bien atteint la position d'arrêt. SMC_En position un bloc fonctionnel peut être utilisé pour ce faire.

    _sm_img_example_cnc16_4.png
  7. Cela amène l'interpréteur à reprendre le décodage, mais avec la position de départ mise à jour, de sorte que le bloc suivant N30 est démarré à partir de la position X=55.5.

Le schéma suivant illustre ces étapes. Les chiffres entre parenthèses font référence aux étapes correspondantes du processus décrit ci-dessus.

_sm_img_example_cnc16_5.png

Mise en service

  1. Créez l'application et téléchargez-la sur une manette.

  2. Ouvrez la trace et téléchargez-la sur le contrôleur.

  3. Démarrez l'application et ouvrez la visualisation.